package com.sjc.designpattern.factory;

/**
 * @Classname FactoryPatternDemo
 * @Description 工厂模式：面向接口编程
 * Spring 容器
 * @Date 2020/4/25 09:49
 * @Created by SangJiacun
 */
public class FactoryPatternDemo {
    public static void main(String[] args) {
        Product product = ProductFactory.create();
        product.execute();

        // 不要自己在代码里手动new一个实现类对象出来
        // 如果此时有100个地方都需要获取Product的实例
        // 但是此时Product实现类改了
        // 我们只要修改一个地方即可，就是ProductFacory中
    }

    public static class ProductFactory {
        public static Product create() {
//            return new ProductImpl1();
            return new ProductImpl2();
        }
    }

    public interface Product {
        void execute();
    }

    public static class ProductImpl1 implements Product {
		@Override
        public void execute() {
			System.out.print("产品1的功能实现");
		}
	}

    public static class ProductImpl2 implements Product {
        @Override
        public void execute() {
            System.out.print("产品2的功能实现");
        }
    }



}
